home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / DriverSynchronization.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  2KB  |  104 lines

  1. /*
  2.      File:        DriverSynchronization.h
  3.  
  4.      Contains:    Driver Synchronization Interfaces.
  5.  
  6.      Version:    Technology:    Sustem 7.5 and 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __DRIVERSYNCHRONIZATION__
  19. #define __DRIVERSYNCHRONIZATION__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. #if FOR_SYSTEM8_PREEMPTIVE
  28. #ifndef __SYNCHRONIZATION__
  29. #include <Synchronization.h>
  30. #endif
  31. #endif
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36.  
  37. #if PRAGMA_IMPORT_SUPPORTED
  38. #pragma import on
  39. #endif
  40.  
  41. #if PRAGMA_ALIGN_SUPPORTED
  42. #pragma options align=mac68k
  43. #endif
  44.  
  45. extern Boolean CompareAndSwap(UInt32 oldVvalue, UInt32 newValue, UInt32 *OldValueAdr);
  46.  
  47. extern Boolean TestAndClear(UInt32 bit, UInt8 *startAddress);
  48.  
  49. #if FOR_SYSTEM7_ONLY
  50. extern Boolean TestAndSet(UInt32 bit, UInt8 *startAddress);
  51.  
  52. extern SInt8 IncrementAtomic8(SInt8 *value);
  53.  
  54. extern SInt8 DecrementAtomic8(SInt8 *value);
  55.  
  56. extern SInt8 AddAtomic8(SInt32 amount, SInt8 *value);
  57.  
  58. extern UInt8 BitAndAtomic8(UInt32 mask, UInt8 *value);
  59.  
  60. extern UInt8 BitOrAtomic8(UInt32 mask, UInt8 *value);
  61.  
  62. extern UInt8 BitXorAtomic8(UInt32 mask, UInt8 *value);
  63.  
  64. #endif
  65. extern SInt16 IncrementAtomic16(SInt16 *value);
  66.  
  67. extern SInt16 DecrementAtomic16(SInt16 *value);
  68.  
  69. extern SInt16 AddAtomic16(SInt32 amount, SInt16 *value);
  70.  
  71. extern UInt16 BitAndAtomic16(UInt32 mask, UInt16 *value);
  72.  
  73. extern UInt16 BitOrAtomic16(UInt32 mask, UInt16 *value);
  74.  
  75. extern UInt16 BitXorAtomic16(UInt32 mask, UInt16 *value);
  76.  
  77. extern SInt32 IncrementAtomic(SInt32 *value);
  78.  
  79. extern SInt32 DecrementAtomic(SInt32 *value);
  80.  
  81. extern SInt32 AddAtomic(SInt32 amount, SInt32 *value);
  82.  
  83. extern UInt32 BitAndAtomic(UInt32 mask, UInt32 *value);
  84.  
  85. extern UInt32 BitOrAtomic(UInt32 mask, UInt32 *value);
  86.  
  87. extern UInt32 BitXorAtomic(UInt32 mask, UInt32 *value);
  88.  
  89.  
  90. #if PRAGMA_ALIGN_SUPPORTED
  91. #pragma options align=reset
  92. #endif
  93.  
  94. #if PRAGMA_IMPORT_SUPPORTED
  95. #pragma import off
  96. #endif
  97.  
  98. #ifdef __cplusplus
  99. }
  100. #endif
  101.  
  102. #endif /* __DRIVERSYNCHRONIZATION__ */
  103.  
  104.